package com.tju.ocean_ecology_website.dto;

import lombok.Data;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;

/**
 * 分页请求DTO
 * 用于接收前端分页参数
 */
@Data
public class PageRequestDTO {
    
    /**
     * 当前页码，从1开始
     */
    private Integer page = 1;
    
    /**
     * 每页大小
     */
    private Integer pageSize = 10;
    
    /**
     * 排序字段
     */
    private String sortField;
    
    /**
     * 排序方向：asc或desc
     */
    private String sortOrder;
    
    /**
     * 转换为Spring Data的PageRequest对象
     * @return PageRequest对象
     */
    public PageRequest toPageRequest() {
        // 页码从0开始
        int pageNumber = page - 1;
        if (pageNumber < 0) {
            pageNumber = 0;
        }
        
        // 每页大小不能小于1
        int size = pageSize;
        if (size < 1) {
            size = 10;
        }
        
        // 如果有排序字段，则添加排序
        if (sortField != null && !sortField.isEmpty()) {
            Sort.Direction direction = Sort.Direction.ASC;
            if (sortOrder != null && sortOrder.equalsIgnoreCase("desc")) {
                direction = Sort.Direction.DESC;
            }
            return PageRequest.of(pageNumber, size, Sort.by(direction, sortField));
        }
        
        return PageRequest.of(pageNumber, size);
    }
}
